Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Process management (computing)</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Process_management_(computing)"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.imagemap.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.math.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Process_management_computing rootpage-Process_management_computing skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Process management (computing)</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */


.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}


/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1246091330">
/* start https://en.wikipedia.org/ */


.mw-parser-output .sidebar{width:22em;float:right;clear:right;margin:0.5em 0 1em 1em;background:var(--background-color-neutral-subtle,#f8f9fa);border:1px solid var(--border-color-base,#a2a9b1);padding:0.2em;text-align:center;line-height:1.4em;font-size:88%;border-collapse:collapse;display:table}body.skin-minerva .mw-parser-output .sidebar{display:table!important;float:right!important;margin:0.5em 0 1em 1em!important}.mw-parser-output .sidebar-subgroup{width:100%;margin:0;border-spacing:0}.mw-parser-output .sidebar-left{float:left;clear:left;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-none{float:none;clear:both;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-outer-title{padding:0 0.4em 0.2em;font-size:125%;line-height:1.2em;font-weight:bold}.mw-parser-output .sidebar-top-image{padding:0.4em}.mw-parser-output .sidebar-top-caption,.mw-parser-output .sidebar-pretitle-with-top-image,.mw-parser-output .sidebar-caption{padding:0.2em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-pretitle{padding:0.4em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-title,.mw-parser-output .sidebar-title-with-pretitle{padding:0.2em 0.8em;font-size:145%;line-height:1.2em}.mw-parser-output .sidebar-title-with-pretitle{padding:0.1em 0.4em}.mw-parser-output .sidebar-image{padding:0.2em 0.4em 0.4em}.mw-parser-output .sidebar-heading{padding:0.1em 0.4em}.mw-parser-output .sidebar-content{padding:0 0.5em 0.4em}.mw-parser-output .sidebar-content-with-subgroup{padding:0.1em 0.4em 0.2em}.mw-parser-output .sidebar-above,.mw-parser-output .sidebar-below{padding:0.3em 0.8em;font-weight:bold}.mw-parser-output .sidebar-collapse .sidebar-above,.mw-parser-output .sidebar-collapse .sidebar-below{border-top:1px solid #aaa;border-bottom:1px solid #aaa}.mw-parser-output .sidebar-navbar{text-align:right;font-size:115%;padding:0 0.4em 0.4em}.mw-parser-output .sidebar-list-title{padding:0 0.4em;text-align:left;font-weight:bold;line-height:1.6em;font-size:105%}.mw-parser-output .sidebar-list-title-c{padding:0 0.4em;text-align:center;margin:0 3.3em}@media(max-width:640px){body.mediawiki .mw-parser-output .sidebar{width:100%!important;clear:both;float:none!important;margin-left:0!important;margin-right:0!important}}body.skin--responsive .mw-parser-output .sidebar a>img{max-width:none!important}@media screen{html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-list-title,html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle{background:transparent!important}html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle a{color:var(--color-progressive)!important}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-list-title,html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle{background:transparent!important}html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle a{color:var(--color-progressive)!important}}@media print{body.ns-0 .mw-parser-output .sidebar{display:none!important}}


/* end https://en.wikipedia.org/ */
</style><table class="sidebar nomobile nowraplinks"><tbody><tr><th class="sidebar-title"><a href="Operating_system" title="Operating system">Operating systems</a></th></tr><tr><td class="sidebar-image"></td></tr><tr><th class="sidebar-heading" style="font-size:110%;">
Common features</th></tr><tr><td class="sidebar-content hlist">
<ul>
<li><a href="Interrupt" title="Interrupt">Interrupts</a></li>
<li><a href="Memory_management" title="Memory management">Memory management</a></li>
<li><a href="File_system" title="File system">File system</a></li>
<li><a href="Device_driver" title="Device driver">Device drivers</a></li>
<li><a href="Computer_network" title="Computer network">Networking</a></li>
<li><a href="Computer_security" title="Computer security">Security</a></li>
<li><a href="Input/output" title="Input/output">Input/output</a></li></ul></td>
</tr><tr><td class="sidebar-navbar"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}


/* end https://en.wikipedia.org/ */
</style></td></tr></tbody></table>
<p>A process is a program in execution, and an integral part of any modern-day <a href="Operating_system" title="Operating system">operating system</a> (OS). The OS must allocate resources to <a href="Process_(computing)" title="Process (computing)">processes</a>, enable processes to share and exchange information, protect the resources of each process from other processes and enable synchronization among processes. To meet these requirements, The OS must maintain a <a href="Data_structure" title="Data structure">data structure</a> for each process, which describes the state and resource ownership of that process, and which enables the operating system to exert control over each process.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Multiprogramming">Multiprogramming</h2></div>
<p>In any modern operating system, there can be more than one instance of a <a href="Computer_program" title="Computer program">program</a> loaded in memory at the same time. For example, more than one user can be executing the same program, with each user having separate copies of the program loaded into memory. With some programs, it is possible to have one copy loaded into memory, while several users have shared access to it so that they can each execute the same program-code. Such a program is called <a href="Reentrant_(subroutine)" class="mw-redirect" title="Reentrant (subroutine)">re-entrant</a>. At a given instant, the <a href="Central_processing_unit" title="Central processing unit">processor</a> can only be executing one instruction from one program, but several processes can be sustained over a period of time by assigning each process to the processor at intervals while the remainder become temporarily inactive. The execution of multiple processes over a period of time, rather than simultaneously, is known as concurrent execution.
</p><p>A <a href="Multiprogramming" class="mw-redirect" title="Multiprogramming">multiprogramming</a> or <a href="Computer_multitasking" title="Computer multitasking">multitasking</a> O.S. is a Operating System that can execute many processes concurrently. Multiprogramming requires that the processor be allocated to each process for a period of time and de-allocated or issued at an appropriate moment. If the processor is de-allocated during the execution of a process, it must be done in a way that the process can restart later as efficiently as possible.
</p><p>There are two ways for an OS to regain control of the processor during a program's execution in order for the OS to perform de-allocation or allocation:
</p>
<ol><li>The process issues a <a href="System_call" title="System call">system call</a> (sometimes called a <i>software <a href="Interrupt" title="Interrupt">interrupt</a></i>); for example, an I/O request occurs requesting to access a file on a hard disk.</li>
<li>A hardware <a href="Interrupt" title="Interrupt">interrupt</a> occurs; for example, a key was pressed on the keyboard, or a timer runs out (used in <a href="Preemption_(computing)" title="Preemption (computing)">preemptive multitasking</a>).</li></ol>
<p>The stopping of one process and starting (or restarting) of another process is called a <a href="Context_switch" title="Context switch">context switch</a> or context change. In many modern operating systems, processes can consist of many sub-processes. This introduces the concept of a <i><a href="Thread_(computer_science)" class="mw-redirect" title="Thread (computer science)">thread</a></i>. A thread may be viewed as a <i>sub-process</i>; that is, a separate, independent sequence of execution within the code of one process. Threads are becoming increasingly important in the design of distributed and <a href="Client%E2%80%93server" class="mw-redirect" title="Client–server">client–server</a> systems and in software run on <a href="Parallel_computing" title="Parallel computing">multi-processor</a> systems.
</p>
<div class="mw-heading mw-heading2"><h2 id="How_multiprogramming_increases_efficiency">How multiprogramming increases efficiency</h2></div>
<p>A common trait observed among processes associated with most computer programs is that they alternate between <a href="CPU" class="mw-redirect" title="CPU">CPU</a> cycles and <a href="I/O" class="mw-redirect" title="I/O">I/O</a> cycles. For the portion of the time required for CPU cycles, the process is being executed and is occupying the CPU. During the time required for I/O cycles, the process is not using the processor. Instead, it is either waiting to perform Input/Output, or is actually performing Input/Output. An example of this is reading from or writing to a file on disk. Prior to the advent of <a href="Multiprogramming" class="mw-redirect" title="Multiprogramming">multiprogramming</a>, <a href="Computers" class="mw-redirect" title="Computers">computers</a> operated as single-user systems. Users of such systems quickly become aware that for much of the time that a computer was allocated to a single user&nbsp;– for example, when a user was entering information or debugging programs&nbsp;– the processor was idle. <a href="Computer_scientists" class="mw-redirect" title="Computer scientists">Computer scientists</a> observed that the overall performance of the machine could be improved by letting a different process use the processor whenever one process was waiting for input/output. In a <i>uni-programming system</i>, if <i>N</i> users were to execute programs with individual execution times of <i>t</i><sub>1</sub>, <i>t</i><sub>2</sub>, ..., <i>t</i><sub><i>N</i></sub>, then the total time, <i>t</i><sub>uni</sub>, to service the <i>N</i> processes (consecutively) of all <i>N</i> users would be:
</p>
<dl><dd><i>t</i><sub>uni</sub> = <i>t</i><sub>1</sub> + <i>t</i><sub>2</sub> + ... + <i>t</i><sub><i>N</i></sub>.</dd></dl>
<p>However, because each process consumes both CPU cycles and I/O cycles, the time which each process actually uses the CPU is a very small fraction of the total execution time for the process. So, for process <i>i</i>:
</p>
<dl><dd><i>t</i><sub><i>i</i> (processor)</sub> ≪ <i>t</i><sub><i>i</i> (execution)</sub></dd></dl>
<p>where
</p><p><i>t</i><sub><i>i</i> (processor)</sub> is the time process <i>i</i> spends using the CPU, and <i>t</i><sub><i>i</i> (execution)</sub> is the total execution time for the process; i.e. the time for CPU cycles plus I/O cycles to be carried out (executed) until completion of the process.
</p><p>In fact, usually, the sum of all the processor time, used by <i>N</i> processes, rarely exceeds a small fraction of the time to execute any one of the processes;
</p>
<dl><dd><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \sum _{j=1}^{N}t_{j\,(\mathrm {processor} )}<t_{i\,(\mathrm {execution} \!)}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<munderover>
<mo>∑<!-- ∑ --></mo>
<mrow class="MJX-TeXAtom-ORD">
<mi>j</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mrow class="MJX-TeXAtom-ORD">
<mi>N</mi>
</mrow>
</munderover>
<msub>
<mi>t</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>j</mi>
<mspace width="thinmathspace"></mspace>
<mo stretchy="false">(</mo>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="normal">p</mi>
<mi mathvariant="normal">r</mi>
<mi mathvariant="normal">o</mi>
<mi mathvariant="normal">c</mi>
<mi mathvariant="normal">e</mi>
<mi mathvariant="normal">s</mi>
<mi mathvariant="normal">s</mi>
<mi mathvariant="normal">o</mi>
<mi mathvariant="normal">r</mi>
</mrow>
<mo stretchy="false">)</mo>
</mrow>
</msub>
<mo>&lt;</mo>
<msub>
<mi>t</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>i</mi>
<mspace width="thinmathspace"></mspace>
<mo stretchy="false">(</mo>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="normal">e</mi>
<mi mathvariant="normal">x</mi>
<mi mathvariant="normal">e</mi>
<mi mathvariant="normal">c</mi>
<mi mathvariant="normal">u</mi>
<mi mathvariant="normal">t</mi>
<mi mathvariant="normal">i</mi>
<mi mathvariant="normal">o</mi>
<mi mathvariant="normal">n</mi>
</mrow>
<mspace width="negativethinmathspace"></mspace>
<mo stretchy="false">)</mo>
</mrow>
</msub>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \sum _{j=1}^{N}t_{j\,(\mathrm {processor} )}&lt;t_{i\,(\mathrm {execution} \!)}}</annotation>
</semantics>
</math></span><img src="./796549acad9e04f181cfec3ca1115374795d2ca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.338ex; width:26.583ex; height:7.676ex;" alt="{\displaystyle \sum _{j=1}^{N}t_{j\,(\mathrm {processor} )}<t_{i\,(\mathrm {execution} \!)}}" loading="lazy"></span></dd></dl>
<p>Therefore, in uni-programming systems, the processor lays idle for a considerable proportion of the time. To overcome this inefficiency, multiprogramming is now implemented in modern operating systems such as <a href="Linux" title="Linux">Linux</a>, <a href="UNIX" class="mw-redirect" title="UNIX">UNIX</a> and <a href="Microsoft_Windows" title="Microsoft Windows">Microsoft Windows</a>. This enables the processor to switch from one process, X, to another, Y, whenever X is involved in the I/O phase of its execution. Since the processing time is much less than a single job's runtime, the total time to service all <i>N</i> users with a multiprogramming system can be reduced to approximately:
</p>
<dl><dd><i>t</i><sub>multi</sub> = max(<i>t</i><sub>1</sub>, <i>t</i><sub>2</sub>, ..., <i>t</i><sub><i>N</i></sub>)</dd></dl>
<div class="mw-heading mw-heading2"><h2 id="Process_creation">Process creation</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1251242444">
/* start https://en.wikipedia.org/ */


.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}


/* end https://en.wikipedia.org/ */
</style>
<p>Operating systems need some ways to create processes. In a very simple system designed for running only a single application (e.g., the controller in a microwave oven), it may be possible to have all the processes that will ever be needed present when the system comes up. In general-purpose systems, however, some way is needed to create and terminate processes as needed during operation.<br>
There are four principal events that cause a process to be created:
</p>
<ul><li>System initialization.</li>
<li>Execution of process creation system call by a running process.</li>
<li>A user request to create a new process.</li>
<li>Initiation of a batch job.</li></ul>
<p>When an operating system is booted, several essential processes are typically initiated to prepare the system for operation. Some of these are foreground processes, that interact with a (human) user and perform work for them. Others are <a href="Background_process" title="Background process">background processes</a>, which are not associated with particular users, but instead have some specific function. For example, one background process may be designed to accept incoming e-mails, sleeping most of the day but suddenly springing to life when an incoming e-mail arrives. An alternative background process could be designed to accept incoming requests for web pages hosted on the machine, waking up only when a request arrives to service it.
</p><p>Process creation in UNIX and Linux is done through <a href="Fork_(system_call)" title="Fork (system call)">fork()</a> or clone() system calls. There are several steps involved in process creation. The first step is the validation of whether the <a href="Parent_process" title="Parent process">parent process</a> has sufficient authorization to create a process. Upon successful validation, the parent process is copied almost entirely, with changes only to the unique process id, parent process, and user-space. Each new process gets its own user space.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p><p>Process creation in Windows is done through the CreateProcessA() system call. A new process runs in the security context of the calling process, but otherwise runs independently of the calling process. Methods exist to alter the security context in which a new processes runs. New processes are assigned identifiers by which they can be accessed. Functions are provided to synchronize calling threads to newly created processes.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Process_termination">Process termination</h2></div>

<p>There are many reasons for process termination:
</p>
<ul><li>Batch job issues halt instruction</li>
<li>User logs off</li>
<li><a href="Process_(computing)" title="Process (computing)">Process</a> executes a service request to terminate</li>
<li>Error and fault conditions</li>
<li>Normal completion</li>
<li>Time limit exceeded</li>
<li>Memory unavailable</li>
<li>Bounds violation; for example: attempted access of (non-existent) 11th element of a 10-element array</li>
<li>Protection error; for example: attempted to write to a read-only file</li>
<li><a href="Arithmetic" title="Arithmetic">Arithmetic</a> error; for example: attempted division by zero</li>
<li>Time overrun; for example: the process waited longer than a specified maximum for an event</li>
<li><a href="I/O" class="mw-redirect" title="I/O">I/O</a> failure</li>
<li>Invalid instruction; for example: when a process tries to execute data (text)</li>
<li>Privileged instruction</li>
<li><a href="Data" title="Data">Data</a> misuse</li>
<li><a href="Operating_system" title="Operating system">Operating system</a> intervention; for example: to resolve a deadlock</li>
<li>Parent terminates so child processes terminate (cascading termination)</li>
<li>Parent request</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Two-state_process_management_model">Two-state process management model</h2></div>

<p>The <a href="Operating_system" title="Operating system">operating system</a>'s principal responsibility is to control the execution of <a href="Process_(computing)" title="Process (computing)">processes</a>. This includes determining the interleaving pattern for execution and allocation of resources to processes. One part of designing an OS is to describe the behavior that we would like each process to exhibit. The simplest model is based on the fact that a process is either being executed by a processor or it is not. Thus, a process may be considered to be in one of two states, <i>RUNNING</i> or <i>NOT RUNNING</i>. When the operating system creates a new process, that process is initially labeled as <i>NOT RUNNING</i>, and is placed into a queue in the system in the <i>NOT RUNNING</i> state. The process (or some portion of it) then exists in <a href="Main_memory" class="mw-redirect" title="Main memory">main memory</a>, and it waits in the queue for an opportunity to be executed. After some period of time, the currently <i>RUNNING</i> process will be interrupted, and moved from the <i>RUNNING</i> state to the <i>NOT RUNNING</i> state, making the processor available for a different process. The dispatch portion of the OS will then select, from the queue of <i>NOT RUNNING</i> processes, one of the waiting processes to transfer to the processor. The chosen process is then relabeled from a <i>NOT RUNNING</i> state to a <i>RUNNING</i> state, and its execution is either begun if it is a new process, or is resumed if it is a process which was interrupted at an earlier time.
</p><p>From this model, we can identify some design elements of the OS:
</p>
<ul><li>The need to represent, and keep track of each process</li>
<li>The state of a process</li>
<li>The queuing of <i>NON RUNNING</i> processes</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Three-state_process_management_model">Three-state process management model</h2></div>

<p>Although the two-state process management model is a perfectly valid design for an operating system, the absence of a <i>BLOCKED</i> state means that the <a href="Central_processing_unit" title="Central processing unit">processor</a> lies idle when the active process changes from CPU cycles to <a href="I/O" class="mw-redirect" title="I/O">I/O</a> cycles. This design does not make efficient use of the processor. The three-state process management model is designed to overcome this problem, by introducing a new state called the <i>BLOCKED</i> state. This state describes any process which is waiting for an I/O event to take place. In this case, an I/O event can mean the use of some device or a signal from another process. The three states in this model are:
</p>
<ul><li><i>RUNNING:</i> The process that is currently being executed.</li>
<li><i>READY:</i> A process that is queuing and prepared to execute when given the opportunity.</li>
<li><i>BLOCKED:</i> A process that cannot execute until some event occurs, such as the completion of an I/O operation.</li></ul>
<p>At any instant, a process is in one and only one of the three states. For a single processor computer, only one process can be in the <i>RUNNING</i> state at any one instant. There can be many processes in the <i>READY</i> and <i>BLOCKED</i> states, and each of these states will have an associated queue for processes.
</p><p>Processes entering the system must go initially into the <i>READY</i> state, and processes can only enter the <i>RUNNING</i> state via the <i>READY</i> state. Processes normally leave the system from the <i>RUNNING</i> state. For each of the three states, the process occupies space in the main memory. While the reason for most transitions from one state to another might be obvious, some may not be so clear.
</p>
<ul><li><i><b>RUNNING → READY:</b></i> The most common reason for this transition is that the running process has reached the maximum allowable time for uninterrupted execution; i.e. time-out occurs. Other reasons can be the imposition of priority levels as determined by the <a href="Scheduling_(computing)" title="Scheduling (computing)">scheduling</a> policy used for the Low Level <a href="Scheduling_(computing)" title="Scheduling (computing)">Scheduler</a>, and the arrival of a higher priority process into the READY state.</li>
<li><i><b>RUNNING → BLOCKED:</b></i> A process is put into the <i>BLOCKED</i> state if it requests something for which it must wait. A request to the OS is usually in the form of a system call, (i.e. a call from the running process to a function that is part of the OS code). For example, a process might become <i>BLOCKED</i> if it is requesting a file from disk or a saving a section of code or data from memory to a file on disk.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Process_description_and_control">Process description and control</h2></div>
<p>Each <a href="Process_(computing)" title="Process (computing)">process</a> in the system is represented by a data structure called a <a href="Process_control_block" title="Process control block">Process Control Block</a> (PCB), or Process Descriptor in <a href="Linux" title="Linux">Linux</a>.
</p><p><b>Process Identification</b>: Each process is uniquely identified by the user's identification and a pointer connecting it to its descriptor.
</p><p><b>Process Status</b>: This indicates the current status of the process;
<i>READY</i>, <i>RUNNING</i>, <i>BLOCKED</i>, <i>READY SUSPEND</i>, <i>BLOCKED SUSPEND</i>.
</p><p><b>Process State</b>: This contains all of the information needed to indicate the current state of the job.
</p><p><b>Accounting</b>: This contains information used mainly for billing purposes and for performance measurement. It indicates what kind of resources the process has used and for how long.
</p>
<div class="mw-heading mw-heading2"><h2 id="Processor_modes">Processor modes</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1236090951">
/* start https://en.wikipedia.org/ */


.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}


/* end https://en.wikipedia.org/ */
</style><div role="note" class="hatnote navigation-not-searchable">Main article: <a href="CPU_modes" title="CPU modes">CPU modes</a></div>

<p>Contemporary <a href="Processor_(computing)" title="Processor (computing)">processors</a> incorporate a mode bit to define the execution capability of a program in the processor. This bit can be set to <i><a href="Kernel_mode" class="mw-redirect" title="Kernel mode">kernel mode</a></i> or <i><a href="User_mode" class="mw-redirect" title="User mode">user mode</a></i>. Kernel mode is also commonly referred to as <i><a href="Supervisor_mode" class="mw-redirect" title="Supervisor mode">supervisor mode</a></i>, <i>monitor mode</i> or <i><a href="Ring_0_(computer_security)" class="mw-redirect" title="Ring 0 (computer security)">ring 0</a></i>.
</p><p>In kernel mode, the processor can execute every instruction in its hardware repertoire, whereas in user mode, it can only execute a subset of the instructions. Instructions that can be executed only in kernel mode are called kernel, privileged, or protected instructions to distinguish them from the user mode instructions. For example, <a href="I/O" class="mw-redirect" title="I/O">I/O</a> instructions are privileged. As such, if an <a href="Application_software" title="Application software">application</a> program executes in user mode, it cannot perform its own <a href="I/O" class="mw-redirect" title="I/O">I/O</a>. Instead, it must request the OS to perform <a href="I/O" class="mw-redirect" title="I/O">I/O</a> on its behalf.
</p>
<div class="mw-heading mw-heading2"><h2 id="The_Kernel_system_concept">The Kernel system concept</h2></div>
<p>The critical parts of the <a href="Operating_system" title="Operating system">OS</a> run in <a href="Kernel_mode" class="mw-redirect" title="Kernel mode">kernel mode</a>, while other <a href="Software" title="Software">software</a> (such as system utilities and application programs) run in <a href="User_mode" class="mw-redirect" title="User mode">user mode</a>. This serves as the fundamental distinction between the OS and other <a href="System_software" title="System software">system software</a>. The part of the system executing in the kernel mode is called the <a href="Kernel_(computer_science)" class="mw-redirect" title="Kernel (computer science)">kernel</a>, or nucleus, of the OS. The kernel is designed as trusted software, meaning it implements protection mechanisms that cannot be covertly modified by untrusted software running in user mode. Extensions to the OS operate in <a href="User_mode" class="mw-redirect" title="User mode">user mode</a>, so the core functionality of the OS does not depend on these extensions for its correct operation.
</p><p>A key design decision for any OS function is determining whether it should be implemented in the kernel. If implemented in the kernel, it operates in kernel mode, gaining access to other parts of the kernel and being trusted by them. Conversely, if the function executes in <a href="User_mode" class="mw-redirect" title="User mode">user mode</a>, it lacks access to kernel data structures but requires minimal effort to invoke. Although functions implemented in the kernel can be straightforward, the <a href="Trap_(computing)" class="mw-redirect" title="Trap (computing)">trap mechanism</a> and authentication process required during the call can be relatively resource-intensive. While the kernel code itself runs efficiently, the overhead associated with the call can be significant. This is a subtle but important distinction.
</p>
<div class="mw-heading mw-heading2"><h2 id="Requesting_system_services">Requesting system services</h2></div>
<p>There are two techniques by which a program executing in user mode can request the <a href="Kernel_(computer_science)" class="mw-redirect" title="Kernel (computer science)">kernel</a>'s services:
</p>
<ul><li><a href="System_call" title="System call">System call</a></li>
<li><a href="Message_passing" title="Message passing">Message passing</a></li></ul>
<p><a href="Operating_systems" class="mw-redirect" title="Operating systems">Operating systems</a> are designed with one or the other of these two facilities, but not both. First, assume that a <a href="User_mode" class="mw-redirect" title="User mode">user process</a> wishes to invoke a particular target system function. For the <a href="System_call" title="System call">system call</a> approach, the user process uses the trap instruction. The idea is that the system call should appear to be an ordinary procedure call to the application program; the <a href="Operating_system" title="Operating system">OS</a> provides a library of user functions with names corresponding to each actual system call. Each of these stub functions contains a trap to the OS function. When the application program calls the stub, it executes the trap instruction, which switches the <a href="CPU" class="mw-redirect" title="CPU">CPU</a> to <a href="Kernel_mode" class="mw-redirect" title="Kernel mode">kernel mode</a>, and then branches (indirectly through an OS table), to the entry point of the function which is to be invoked. When the function completes, it switches the processor to <a href="User_mode" class="mw-redirect" title="User mode">user mode</a> and then returns control to the user process, thus simulating a normal procedure return.
</p><p>In the <a href="Message_passing" title="Message passing">message passing</a> approach, the user process constructs a message that describes the desired service. Then it uses a trusted send function to pass the message to a trusted <a href="Operating_system" title="Operating system">OS</a> <a href="Process_(computing)" title="Process (computing)">process</a>. The send function serves the same purpose as the trap; that is, it carefully checks the message, switches the <a href="Microprocessor" title="Microprocessor">processor</a> to kernel mode, and then delivers the message to a process that implements the target functions. Meanwhile, the user process waits for the result of the service request with a message receive operation. When the OS process completes the operation, it sends a message back to the user process.
</p><p>The distinction between the two approaches has important consequences regarding the independence of the OS behavior from the application process behavior, and the resulting performance. As a rule of thumb, <a href="Operating_system" title="Operating system">operating systems</a> based on a <a href="System_call" title="System call">system call</a> interface can be made more efficient than those requiring messages to be exchanged between distinct processes. This is the case even though the system call must be implemented with a trap instruction; that is, even though the trap is relatively expensive to perform, it is more efficient than the message-passing approach, where there are generally higher costs associated with the process <a href="Multiplexing" title="Multiplexing">multiplexing</a>, message formation and message copying. The system call approach has the interesting property that there is not necessarily any OS process. Instead, a process executing in <a href="User_mode" class="mw-redirect" title="User mode">user mode</a> changes to <a href="Kernel_mode" class="mw-redirect" title="Kernel mode">kernel mode</a> when it is executing kernel code, and switches back to user mode when it returns from the OS call. If, on the other hand, the OS is designed as a set of separate processes, it is usually easier to design it so that it gets control of the machine in special situations, than if the kernel is simply a collection of functions executed by user processes in kernel mode. Procedure-based operating systems usually include at least a few <a href="System_process" class="mw-redirect" title="System process">system processes</a> (called <a href="Daemon_(computer_software)" class="mw-redirect" title="Daemon (computer software)">daemons</a> in <a href="UNIX" class="mw-redirect" title="UNIX">UNIX</a>) to handle situations whereby the machine is otherwise idle such as <a href="Scheduling_(computing)" title="Scheduling (computing)">scheduling</a> and handling the network.
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Process_isolation" title="Process isolation">Process isolation</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://sunnyeves.blogspot.com/2010/09/sneak-peek-into-linux-kernel-chapter-2.html">"A Sneak-Peek into Linux Kernel - Chapter 2: Process Creation"</a></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */


.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}


/* end https://en.wikipedia.org/ */
</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessa">"CreateProcessA function (Processthreadsapi.h) - Win32 apps"</a>. 9 February 2023.</cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20230329231822/https://learn.microsoft.com/en-us/windows/win32/procthread/creating-processes">"Creating Processes - Win32 apps"</a>. 9 February 2023. Archived from <a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/windows/win32/procthread/creating-processes">the original</a> on 2023-03-29.</cite></span>
</li>
</ol></div>
<div class="mw-heading mw-heading2"><h2 id="Sources">Sources</h2></div>
<ul><li>Operating System incorporating Windows and UNIX, Colin Ritchie. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>0-8264-6416-5</bdi></li>
<li>Operating Systems, William Stallings, Prentice Hall, (4th Edition, 2000)</li>
<li>Multiprogramming, Process Description and Control</li>
<li>Operating Systems – A Modern Perspective, Gary Nutt, Addison Wesley, (2nd Edition, 2001).</li>
<li>Process Management Models, Scheduling, UNIX System V Release 4:</li>
<li>Modern Operating Systems, Andrew Tanenbaum, Prentice Hall, (2nd Edition, 2001).</li>
<li>Operating System Concepts, Silberschatz &amp; Galvin &amp; Gagne (<a rel="nofollow" class="external free" href="https://codex.cs.yale.edu/avi/os-book/OS9/slide-dir/">https://codex.cs.yale.edu/avi/os-book/OS9/slide-dir/</a>), John Wiley &amp; Sons, (6th Edition, 2003)</li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}


/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="Operating_systems310" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><div id="Operating_systems310" style="font-size:114%;margin:0 4em"><a href="Operating_system" title="Operating system">Operating systems</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">General</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Comparison_of_operating_systems" title="Comparison of operating systems">Comparison</a></li>
<li><a href="Forensic_software_engineering" title="Forensic software engineering">Forensic engineering</a></li>
<li><a href="History_of_operating_systems" title="History of operating systems">History</a></li>
<li><a href="List_of_operating_systems" title="List of operating systems">List</a></li>
<li><a href="Timeline_of_operating_systems" title="Timeline of operating systems">Timeline</a></li>
<li><a href="Usage_share_of_operating_systems" title="Usage share of operating systems">Usage share</a></li>
<li><a href="Comparison_of_user_features_of_operating_systems" title="Comparison of user features of operating systems">User features comparison</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Variants</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Disk_operating_system" title="Disk operating system">Disk operating system</a></li>
<li><a href="Distributed_operating_system" title="Distributed operating system">Distributed operating system</a></li>
<li><a href="Embedded_operating_system" title="Embedded operating system">Embedded operating system</a></li>
<li><a href="Hobbyist_operating_system" title="Hobbyist operating system">Hobbyist operating system</a></li>
<li><a href="Just_enough_operating_system" title="Just enough operating system">Just enough operating system</a></li>
<li><a href="Mobile_operating_system" title="Mobile operating system">Mobile operating system</a></li>
<li><a href="Network_operating_system" title="Network operating system">Network operating system</a></li>
<li><a href="Object-oriented_operating_system" title="Object-oriented operating system">Object-oriented operating system</a></li>
<li><a href="Real-time_operating_system" title="Real-time operating system">Real-time operating system</a></li>
<li><a href="Supercomputer_operating_system" title="Supercomputer operating system">Supercomputer operating system</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Kernel_(operating_system)" title="Kernel (operating system)">Kernel</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:6em"><a href="Computer_architecture" title="Computer architecture">Architectures</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Exokernel" title="Exokernel">Exokernel</a></li>
<li><a href="Hybrid_kernel" title="Hybrid kernel">Hybrid</a></li>
<li><a href="Microkernel" title="Microkernel">Microkernel</a></li>
<li><a href="Monolithic_kernel" title="Monolithic kernel">Monolithic</a></li>
<li><a href="Multikernel" title="Multikernel">Multikernel</a></li>
<li><a href="Vkernel" title="Vkernel">vkernel</a></li>
<li><a href="Rump_kernel" title="Rump kernel">Rump kernel</a></li>
<li><a href="Unikernel" title="Unikernel">Unikernel</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:6em">Components</th><td class="navbox-list-with-group navbox-list navbox-even" style="padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Device_driver" title="Device driver">Device driver</a></li>
<li><a href="Loadable_kernel_module" title="Loadable kernel module">Loadable kernel module</a></li>
<li><a href="User_space_and_kernel_space" title="User space and kernel space">User space and kernel space</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:6em">Concepts</th><td class="navbox-list-with-group navbox-list navbox-odd" style="padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Computer_multitasking" title="Computer multitasking">Computer multitasking</a> (<a href="Cooperative_multitasking" title="Cooperative multitasking">Cooperative</a>, <a href="Preemption_(computing)" title="Preemption (computing)">Preemptive</a>)</li>
<li><a href="Context_switch" title="Context switch">Context switch</a></li>
<li><a href="Interrupt" title="Interrupt">Interrupt</a></li>
<li><a href="Inter-process_communication" title="Inter-process communication">IPC</a></li>
<li><a href="Process_(computing)" title="Process (computing)">Process</a></li>
<li><a href="Process_control_block" title="Process control block">Process control block</a></li>
<li><a href="Real-time_operating_system" title="Real-time operating system">Real-time</a></li>
<li><a href="Thread_(computing)" title="Thread (computing)">Thread</a></li>
<li><a href="Time-sharing" title="Time-sharing">Time-sharing</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:6em"><a href="Scheduling_(computing)" title="Scheduling (computing)">Scheduling<br>algorithms</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Fixed-priority_pre-emptive_scheduling" title="Fixed-priority pre-emptive scheduling">Fixed-priority preemptive</a></li>
<li><a href="Multilevel_feedback_queue" title="Multilevel feedback queue">Multilevel feedback queue</a></li>
<li><a href="Round-robin_scheduling" title="Round-robin scheduling">Round-robin</a></li>
<li><a href="Shortest_job_next" title="Shortest job next">Shortest job next</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Memory_management_(operating_systems)" title="Memory management (operating systems)">Memory management</a>,<br><a href="System_resource" title="System resource">resource</a> protection</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Bus_error" title="Bus error">Bus error</a></li>
<li><a href="General_protection_fault" title="General protection fault">General protection fault</a></li>
<li><a href="Memory_paging" title="Memory paging">Memory paging</a></li>
<li><a href="Memory_protection" title="Memory protection">Memory protection</a></li>
<li><a href="Protection_ring" title="Protection ring">Protection ring</a></li>
<li><a href="Segmentation_fault" title="Segmentation fault">Segmentation fault</a></li>
<li><a href="Virtual_memory" title="Virtual memory">Virtual memory</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Non-volatile_memory" title="Non-volatile memory">Storage</a> access,<br><a href="File_system" title="File system">file systems</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Booting#BOOT-LOADER" title="Booting">Boot loader</a></li>
<li><a href="Defragmentation" title="Defragmentation">Defragmentation</a></li>
<li><a href="Device_file" title="Device file">Device file</a></li>
<li><a href="File_attribute" title="File attribute">File attribute</a></li>
<li><a href="Inode" title="Inode">Inode</a></li>
<li><a href="Journaling_file_system" title="Journaling file system">Journal</a></li>
<li><a href="Disk_partitioning" title="Disk partitioning">Partition</a></li>
<li><a href="Virtual_file_system" title="Virtual file system">Virtual file system</a></li>
<li><a href="Virtual_tape_library" title="Virtual tape library">Virtual tape library</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Supporting concepts</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="API" title="API">API</a></li>
<li><a href="Computer_network" title="Computer network">Computer network</a></li>
<li><a href="Hardware_abstraction" title="Hardware abstraction">HAL</a></li>
<li><a href="Live_CD" title="Live CD">Live CD</a></li>
<li><a href="Live_USB" title="Live USB">Live USB</a></li>
<li><a href="Shell_(computing)" title="Shell (computing)">Shell</a>
<ul><li><a href="Command-line_interface" title="Command-line interface">CLI</a></li>
<li><a href="User_interface" title="User interface">User interface</a></li></ul></li>
<li><a href="Preboot_Execution_Environment" title="Preboot Execution Environment">PXE</a></li></ul>
</div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-07-13" href="https://en.wikipedia.org/wiki/?title=Process_management_(computing)&amp;oldid=1300326105">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>

</body></html>